#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
	int	high=30;
	int width=28;
	int air_x=high/2,air_y=width/2;
	int bullt_x,bullt_y;
	int en_x,en_y;
	int score;


void gotoxy(int x,int y)
{
	HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);
	COORD pos;
	pos.X=x;
	pos.Y=y;
	SetConsoleCursorPosition(handle,pos);
}



void startup()
{
	high=20;
	width=28;
	air_x=high/2,air_y=width/2;
	bullt_x=-1,bullt_y=air_y;
	en_x=0,en_y=5;
	score=0;
}

void show()
{
	gotoxy(0,0);  //清屏
	int i,j;
	for(i=0;i<=high;i++)
	{
		for(j=0;j<=width;j++)
		{
			if((i==air_x)&&(j==air_y))
			{
				printf("*");
			}
			else if((i==(air_x+1))&&(j<=(air_y+2))&&(j>=(air_y-2)))
			{
				printf("*");
			}
			else if((i==(air_x+2))&&(j==(air_y-1)||j==(air_y+1)))
			{
				printf("*");
			}
			else if((i==bullt_x)&&(j==bullt_y))
				{
					printf("|");
				}
			else if((i==en_x)&&(j==en_y))
				{
					printf("@");
				}
			else if(j==width)
				{
					printf("|");
				}
			else if(i==high)
				{
					printf("_");
				}
			else
			{
				printf(" ");
			}
			if(bullt_x==air_x)
				break;
	
		}
		printf("\n");
	}
	printf("击中次数%d",score);

}

void upwhitoutInput()
{
	static int speed=0;

	if(air_x<0)
	{
		air_x=0;
	}
	if(air_x>(high-2))
	{
		air_x=(high-2);
	}
	if(air_y<0)
	{
		air_y=0;
	}
	if(air_y>(width-3))
	{
		air_y=(width-3);
	}
	if(score<=5)
	{
		if(speed<30)
		{
			speed++;
		}
		if(speed==30)
		{
			if(en_x<high)
			en_x++;
			else
			{
				en_x=0;
				en_y=rand()%width;
			}

			speed=0;
		}
	}
	if((score<=10)&&(score>5))
	{
		if(speed<15)
		{
			speed++;
		}
		if(speed==15)
		{
			if(en_x<high)
			en_x++;
			else
			{
				en_x=0;
				en_y=rand()%width;
			}

			speed=0;
		}
	}
	if((score>10))
	{
		if(speed<5)
		{
			speed++;
		}
		if(speed==5)
		{
			if(en_x<high)
			en_x++;
			else
			{
				en_x=0;
				en_y=rand()%width;
			}

			speed=0;
		}
	}

	if(bullt_x>-1)
	bullt_x--;

	if((en_x==bullt_x)&&(en_y==bullt_y))
	{
		score++;
		en_x=0;
		en_y=rand()%width;
		bullt_x=-1;
		speed=0;
	}
	
}

void upwhitInput()
{
	char input;
	if(kbhit())  //按键开始
	{
		input=getch();
		if(input=='a')
			air_y--;
		if(input=='d')
			air_y++;
		if(input=='w')
			air_x--;
		if(input=='s')
			air_x++;
		if(input==27)
		{
			printf("\nGAME pause!");
			system("pause");
		}
		if(input==' ')
		{
			bullt_x=air_x-1;
			bullt_y=air_y;
		}
	}
}


int main()
{
	startup();  //数据初始化
	while(1)
	{
		show();  //显示
		upwhitoutInput();  //更新无输入
		upwhitInput();  //更新有输入
	}
	return 0;
}